Hessian矩阵判定极值之MATLAB实现符号解 |
您所在的位置:网站首页 › 黑解 代码哪里来的 › Hessian矩阵判定极值之MATLAB实现符号解 |
By WC 1.9 .2015
1.Hessian矩阵 其定义如下: 附录: 驻点:使下式成立的点 fx(x,y)=0fy(x,y)=0正定阵的判定: 判定定理1:对称阵A为正定的充分必要条件是:A的特征值全为正。 特征值: 2.Matlab实现 eg:求多元函数f(x,y) = x^3 - y^3 + 3x^2 + 3y^2 - 9x 求得驻点为:(1,0),(1,2),(-3,0),(-3,2) 在求Hessian阵 其图形为: 2.MATLAB实现该问题(无约束极值问题) clc,clear syms x y f %定义符号对象 f=x^3-y^3+3*x^2+3*y^2-9*x; df=jacobian(f);%求雅克比矩阵,即一阶偏导数 d2f=jacobian(df);%求Hessian矩阵 [xx,yy]=solve(df); %求驻点 xx=int8(xx);yy=int8(yy);%将符号对象转化为数值型数据 for i=1:length(xx) a=subs(d2f,{x,y},{xx(i),yy(i)}) ; %将xx(i),yy(i)置换x,y带入d2f中 b=eig(a) ;%求矩阵的特征值 f=subs(f,{x,y},{xx(i),yy(i)}) ;%求驻点处的极值 f=int8(f); if all(b>0) fprintf('(%d,%d)是极小值点。极小值为%d \n',xx(i),yy(i),f); elseif all(b |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |